package com.sdweizan.sdk.bytedance.bean.settle;

import com.alibaba.fastjson.annotation.JSONField;
import com.sdweizan.sdk.bytedance.bean.BdBaseRequest;
import com.sdweizan.sdk.bytedance.constants.BdConstants;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BdCreateSettleRequest implements BdBaseRequest {
  // 开发者侧的结算单号，相同结算单号小程序平台会进行幂等处理。 只能使用数字、大小写字母_-*。
  @JSONField(name = "out_settle_no")
  private String outSettleNo;
  // 该笔分账单关联的商户订单单号，标识进行结算的订单
  // （即对应支付预下单接口的"开发者侧的订单号out_order_no"参数）
  @JSONField(name = "out_order_no")
  private String outOrderNo;
  // 结算描述，长度限制 80 个字符
  @JSONField(name = "settle_desc")
  private String settleDesc;

  @JSONField(name = "notify_url")
  private String notifyUrl;
  // 开发者自定义字段，回调原样回传
  @JSONField(name = "cp_extra")
  private String cpExtra;

  @JSONField(name = "app_id")
  private String appId;

  @JSONField(name = "sign")
  private String sign;
  // 其他分账方信息，分账分配参数 SettleParameter
  // 数组序列化后生成的 json 格式字符串(详情见api文档)
  @JSONField(name = "settle_params")
  private String settleParams;
  // 第三方平台服务商 id，非服务商模式留空
  @JSONField(name = "thirdparty_id")
  private String thirdpartyId;
  // 特别注意：该参数类型为string而非bool。
  // 1. 如果为'true'（默认值为'true'，即不传该字段等价于'true'），
  // 则该笔订单剩余未分账金额会一并结算给商户；
  // 2. 如果为'false'，该笔订单剩余未分账的金额不会一并结算给商户，
  // 可以对该笔订单再次进行分账；
  @JSONField(name = "finish")
  private String finish;

  @Override
  public String requestUri() {
    return BdConstants.API_HOST + "/api/apps/ecpay/v1/settle";
  }
}
